package com.guide.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

import org.apache.commons.lang3.StringUtils;

public class CommonUtils {

		
	/**
	 * 用户密码加密
	 * @param password
	 * @param salt
	 * @return
	 */
	public static String MD5Password(String password, String salt) {
		return MD5Utils.getMD5Str(password + salt);
	}
	
	public static String getRandomString(int length) {
	    String base = "abcdefghijklmnopqrstuvwxyz0123456789";     
	    Random random = new Random();     
	    StringBuffer sb = new StringBuffer();     
	    for (int i = 0; i < length; i++) {     
	        int number = random.nextInt(base.length());     
	        sb.append(base.charAt(number));     
	    }     
	    return sb.toString();     
	 }     

	/*****************日期********************/
	/**
	* 字符串转换成日期
	* @param str
	* @return date
	*/
	public static Date StrToDate(String str) {
	  if(StringUtils.isEmpty(str)) {
		  return null;
	  }
	   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	   Date date = null;
	   try {
	    date = format.parse(str);
	   } catch (ParseException e) {
	    e.printStackTrace();
	   }
	   return date;
	}
	
	public static Date StrToDate(String str,String formatStr) {
		  
		   SimpleDateFormat format = new SimpleDateFormat(formatStr);
		   Date date = null;
		   try {
		    date = format.parse(str);
		   } catch (ParseException e) {
		    e.printStackTrace();
		   }
		   return date;
		}
	
	/**
	* 日期转换成字符串
	* @param date 
	* @return str
	*/
	public static String DateToStr(Date date,String formatStr) {
	  
	   SimpleDateFormat format = new SimpleDateFormat(formatStr);
	   String str = format.format(date);
	   return str;
	}

/*******************字符串处理******************/
public static String escape(String src) {  
    int i;  
    char j;  
    StringBuffer tmp = new StringBuffer();  
    tmp.ensureCapacity(src.length() * 6);  
    for (i = 0; i < src.length(); i++) {  
        j = src.charAt(i);  
        if (Character.isDigit(j) || Character.isLowerCase(j)  
                || Character.isUpperCase(j))  
            tmp.append(j);  
        else if (j < 256) {  
            tmp.append("%");  
            if (j < 16)  
                tmp.append("0");  
            tmp.append(Integer.toString(j, 16));  
        } else {  
            tmp.append("%u");  
            tmp.append(Integer.toString(j, 16));  
        }  
    }  
    return tmp.toString();  
}  

public static String unescape(String src) {
	StringBuffer tmp = new StringBuffer();  
	if(!StringUtils.isEmpty(src)){
		 tmp.ensureCapacity(src.length());  
		    int lastPos = 0, pos = 0;  
		    char ch;  
		    while (lastPos < src.length()) {  
		        pos = src.indexOf("%", lastPos);  
		        if (pos == lastPos) {  
		            if (src.charAt(pos + 1) == 'u') {  
		                ch = (char) Integer.parseInt(src  
		                        .substring(pos + 2, pos + 6), 16);  
		                tmp.append(ch);  
		                lastPos = pos + 6;  
		            } else {  
		                ch = (char) Integer.parseInt(src  
		                        .substring(pos + 1, pos + 3), 16);  
		                tmp.append(ch);  
		                lastPos = pos + 3;  
		            }  
		        } else {  
		            if (pos == -1) {  
		                tmp.append(src.substring(lastPos));  
		                lastPos = src.length();  
		            } else {  
		                tmp.append(src.substring(lastPos, pos));  
		                lastPos = pos;  
		            }  
		        }  
		    }  
	}
    
   
    return tmp.toString();  
}  
}